perm filename ENDRV.LST[11,HE]1 blob
sn#690545 filedate 1982-12-15 generic text, type T, neo UTF8
ENDRV MACRO M1113 15-DEC-82 20:33 PAGE 2
1 ; COPYRIGHT XEROX CORPORATION 1979
2 .TITLE ENDRV
3 .DSABL GBL
4 .MCALL IOERR$
5 .MCALL DEVDF$
6 .MCALL HWDDF$
7 .MCALL PKTDF$
8 .MCALL TCBDF$
9 .GLOBL $FORK
10 .GLOBL $GTPKT
11 .GLOBL $GTWRD
12 .GLOBL $IODON
13 .GLOBL $PTWRD
14 .GLOBL IO.RLB
15 000000 IOERR$
16 000000 DEVDF$
17 000000 HWDDF$
18 000000 PKTDF$
19 000000 TCBDF$
20
21 .LIST MEB
22
23 000000 LD$EN=0 ;REQUIRED FOR LOADABLE DRIVERS
24
25 177774 ETHOWC=-4 ;ETHERNET OUTPUT WORD COUNT
26 177776 ETHOBL=-2 ;ETHERNET OUTPUT BUFFER LOCATION
27 000000 ETHOCS=0 ;ETHERNET OUTPUT CONTROL & STATUS
28 000002 ETHOSD=2 ;ETHERNET OUTPUT START DELAY
29 177774 ETHIWC=-4 ;ETHERNET INPUT WORD COUNT
30 177776 ETHIBL=-2 ;ETHERNET INPUT BUFFER LOCATION
31 000000 ETHICS=0 ;ETHERNET INPUT CONTROL & STATUS
32 000002 ETHRDA=2 ;ETHERNET READ DEVICE ADDRESS
33 ;
34 000000 START: ;MUST BE RELOCATABLE 0
35 000000 TEMP: .BLKW 1 ;SAVED PS
36 000002 CNTBL: .BLKW 2 ;ADDRESSES OF UCB'S
37 ;
38 000006 $ENTBL::
39 000006 000016' .WORD ENINI ;INITIATOR ENTRY POINT
40 000010 000256' .WORD ENCAN ;CANCEL I/O ENTRY POINT
41 000012 000300' .WORD ENTIM ;TIMEOUT ENTRY POINT
42 000014 000302' .WORD ENPWF ;POWER FAIL ENTRY POINT
43 ;
44 ;INITIATE I/O
45 ;
46 000016 ENINI:
47 000016 004767 000000G CALL $GTPKT ;GET AN I/O PACKET TO PROCESS
48 000022 103527 BCS ENPWF
49 000024 010563 000002' MOV R5,CNTBL(R3) ;SAVE UCB POINTER FOR INTERRUPT
50 000030 016402 000012 MOV S.CSR(R4),R2 ;GET DEVICE ADDRESS
51 000034 026127 000012 003000 CMP I.FCN(R1),#3000 ;GET HOST ADDRESS?
52 000042 001405 BEQ HOST ;YES
53 000044 026127 000012 000000G CMP I.FCN(R1),#IO.RLB ;READ?
54 000052 001434 BEQ IN ;YES
55 000054 000450 BR OUT ;WRITE
56 ;
57 ;GET AND RETURN HOST ADDRESS
ENDRV MACRO M1113 15-DEC-82 20:33 PAGE 2-1
58 ;
59 000056 HOST:
60 000056 005062 000000 CLR ETHICS(R2) ;RESET INPUT BOARD
61 000062 005062 177770 CLR -10(R2) ;RESET OUTPUT BOARD
62 000066 013701 172352 MOV @#172352,R1 ;PAR 5
63 000072 072127 000006 ASH #6,R1
64 000076 010167 000446 MOV R1,INADD
65 000102 066767 000440 000440 ADD BUFIN,INADD ;PA OF INBUF
66 000110 010167 001516 MOV R1,OUTADD
67 000114 066767 001510 001510 ADD BUFOUT,OUTADD ;PA OF OUTBUF
68 000122 016201 000002 MOV ETHRDA(R2),R1 ;HOST ADDR
69 000126 105101 COMB R1 ;I/O STATUS WORD 2
70 000130 012700 000001 MOV #IS.SUC,R0 ;I/O STATUS WORD 1
71 000134 005002 CLR R2 ;ERROR LOGGING COUNTS
72 000136 004767 000000G CALL $IODON
73 000142 000725 BR ENINI
74 ;
75 ;START INPUT
76 ;
77 000144 IN:
78 000144 016504 000030 MOV U.CNT(R5),R4 ;SET MAX BYTE COUNT
79 000150 006204 ASR R4 ;MAKE INTO WORD COUNT
80 000152 005404 NEG R4 ;MAKE NEGATIVE
81 000154 010462 177774 MOV R4,ETHIWC(R2) ;SET NEGATIVE WORD COUNT
82 000160 016762 000364 177776 MOV INADD,ETHIBL(R2) ;SET BUFFER ADDRESS
83 000166 012762 000101 000000 MOV #101,ETHICS(R2) ;START INPUT
84 000174 000710 BR ENINI
85 ;
86 ;START OUTPUT
87 ;
88 000176 OUT:
89 000176 016504 000030 MOV U.CNT(R5),R4 ;SET OUTPUT BYTE COUNT
90 000202 006204 ASR R4 ;MAKE INTO WORD COUNT
91 000204 010403 MOV R4,R3
92 000206 005404 NEG R4
93 000210 010462 177774 MOV R4,ETHOWC(R2) ;SET NEGATIVE WORD COUNT
94 000214 012704 001634' MOV #OUTBUF,R4
95 000220 OUT1:
96 000220 004767 000000G CALL $GTWRD ;GET WORD FROM CALLER
97 000224 012624 MOV (SP)+,(R4)+ ;PUT IN OUTPUT BUFFER
98 000226 005303 DEC R3 ;REPEAT UNTIL DONE
99 000230 001373 BNE OUT1
100 000232 016762 001374 177776 MOV OUTADD,ETHOBL(R2) ;SET BUFFER ADDRESS
101 000240 116162 000032 000002 MOVB I.PRM+6(R1),ETHOSD(R2) ;SET OUTPUT START DELAY
102 000246 012762 000101 000000 MOV #101,ETHOCS(R2) ;START OUTPUT
103 000254 000660 BR ENINI
104 ;
105 ;CANCEL I/O
106 ;
107 000256 ENCAN:
108 000256 005074 000012 CLR @S.CSR(R4) ;RESET ETHERNET BOARD
109 000262 012700 177761 MOV #IE.ABO,R0 ;SET ABORT CODE
110 000266 005001 CLR R1 ;BYTE CNT = 0
111 000270 005002 CLR R2
112 000272 004767 000000G CALL $IODON ;I/O COMPLETED
113 000276 000207 RETURN
114 ;
ENDRV MACRO M1113 15-DEC-82 20:33 PAGE 2-2
115 ;TIMEOUT ENTRY
116 ;
117 000300 ENTIM:
118 000300 000207 RETURN
119 ;
120 ;POWER-FAIL ENTRY
121 ;
122 000302 ENPWF:
123 000302 000207 RETURN
ENDRV MACRO M1113 15-DEC-82 20:33 PAGE 3
125 ;
126 ;INPUT/OUTPUT COMPLETE INTERRUPT
127 ;
128 000304 $ENINT::
129 000304 000174 000310' JMP @TABLE(R4) ;EXECUTE CORRECT ROUTINE
130 000310 TABLE: ;INTERRUPT VECTORS
131 000310 000450' .WORD $ENOUT ;OUTPUT
132 000312 000316' .WORD $ENINP ;INPUT
133 000314 000450' .WORD $ENOUT ;COLLISION
134 ;
135 ;INPUT INTERRUPT
136 ;
137 000316 $ENINP::
138 000316 016405 000002' MOV CNTBL(R4),R5 ;R5 = UCB ADDRESS
139 000322 016504 000020 MOV U.SCB(R5),R4 ;R4 = SCB ADDRESS
140 000326 017465 000012 000014 MOV @S.CSR(R4),U.CW3(R5) ;INPUT CONTROL & STATUS
141 000334 004767 000000G CALL $FORK
142 000340 016504 000020 MOV U.SCB(R5),R4 ;R4 = SCB ADDRESS
143 000344 016402 000012 MOV S.CSR(R4),R2
144 000350 005062 000000 CLR ETHICS(R2) ;RESET INPUT BOARD
145 000354 005765 000014 TST U.CW3(R5)
146 000360 100004 BPL ENINP1
147 000362 012700 177774 MOV #IE.VER,R0 ;UNSUCCESSFUL COMPLETION
148 000366 005001 CLR R1 ;INPUT BYTE COUNT
149 000370 000422 BR ENINP2
150 000372 ENINP1:
151 000372 012700 000001 MOV #IS.SUC,R0 ;SUCCESSFUL COMPLETION
152 000376 016201 177774 MOV ETHIWC(R2),R1 ;INPUT WORD COUNT (NEG)
153 000402 052701 176000 BIS #176000,R1 ;SIGN EXTEND
154 000406 006301 ASL R1 ;CONVERT TO BYTES
155 000410 066501 000030 ADD U.CNT(R5),R1 ;R1 = PACKET LENGTH (BYTES)
156 000414 010103 MOV R1,R3
157 000416 006203 ASR R3 ;R3 = PACKET LENGTH (WORDS)
158 000420 012704 000552' MOV #INBUF,R4
159 000424 INLOOP:
160 000424 012446 MOV (R4)+,-(SP)
161 000426 004767 000000G CALL $PTWRD ;PASS WORD TO CALLER
162 000432 005303 DEC R3 ;REPEAT UNTIL DONE
163 000434 001373 BNE INLOOP
164 000436 ENINP2:
165 000436 005002 CLR R2 ;ERROR LOGGING COUNTS
166 000440 004767 000000G CALL $IODON
167 000444 000167 177346 JMP ENINI
168 ;
169 ;OUTPUT INTERRUPT
170 ;
171 000450 $ENOUT::
172 000450 016405 000002' MOV CNTBL(R4),R5 ;R5 = UCB ADDRESS
173 000454 016504 000020 MOV U.SCB(R5),R4 ;R4 = SCB ADDRESS
174 000460 017465 000012 000014 MOV @S.CSR(R4),U.CW3(R5) ;OUTPUT CONTROL & STATUS
175 000466 004767 000000G CALL $FORK
176 000472 016504 000020 MOV U.SCB(R5),R4 ;R4 = SCB ADDRESS
177 000476 016402 000012 MOV S.CSR(R4),R2
178 000502 005062 000000 CLR ETHOCS(R2) ;RESET OUTPUT BOARD
179 000506 005765 000014 TST U.CW3(R5)
180 000512 100004 BPL ENOUT1
181 000514 012700 177774 MOV #IE.VER,R0 ;UNSUCCESSFUL COMPLETION
ENDRV MACRO M1113 15-DEC-82 20:33 PAGE 3-1
182 000520 005001 CLR R1 ;OUTPUT BYTE COUNT
183 000522 000404 BR ENOUT2
184 000524 ENOUT1:
185 000524 012700 000001 MOV #IS.SUC,R0 ;SUCCESSFUL COMPLETION
186 000530 016501 000030 MOV U.CNT(R5),R1 ;OUTPUT BYTE COUNT
187 000534 ENOUT2:
188 000534 005002 CLR R2 ;ERROR LOGGING COUNTS
189 000536 004767 000000G CALL $IODON
190 000542 000167 177250 JMP ENINI
191 ;
192 ;I/O BUFFERS
193 ;
194 000546 000552 BUFIN: .WORD INBUF-START ;OFFSET IN PARTITION
195 000550 INADD: .BLKW 1 ;PA OF INBUF
196 000552 INBUF: .BLKW 279.
197 ;
198 001630 001634 BUFOUT: .WORD OUTBUF-START ;OFFSET IN PARTITION
199 001632 OUTADD: .BLKW 1 ;PA OF OUTBUF
200 001634 OUTBUF: .BLKW 279.
201 000001 .END
ENDRV MACRO M1113 15-DEC-82 20:33 PAGE 3-2
SYMBOL TABLE
AS.FPA= 000001 ETHOWC= 177774 IE.FEX= 177717 IN 000144R O.MCRL 000002
AS.PFA= 000004 ETHRDA= 000002 IE.FHE= 177705 INADD 000550R O.PTCB 000004
AS.RCA= 000002 FE.CAL= 000040 IE.FLG= 177647 INBUF 000552R O.STAT 000014
AS.RRA= 000003 FE.CEX= 020000 IE.FLN= 177657 INLOOP 000424R PIRQ = 177772
A.AST 000006 FE.DRV= 000010 IE.FOP= 177713 IO.RLB= ****** G PR0 = 000000
A.BYT 000004 FE.DYM= 010000 IE.HFU= 177744 IS.BV = 000005 PR1 = 000040
A.CBL 000002 FE.EXP= 000200 IE.ICE= 177721 IS.CC = 001401 PR4 = 000200
A.DQSR 177776 FE.EXT= 000001 IE.IES= 177656 IS.CR = 006401 PR5 = 000240
A.KSR5 177774 FE.EXV= 000004 IE.IFC= 177776 IS.EOT= 002001 PR6 = 000300
A.NPR 000010 FE.FDT= 002000 IE.IFU= 177747 IS.ESC= 015401 PR7 = 000340
A.PRM 000012 FE.LSI= 000400 IE.ILL= 177726 IS.ESQ= 115401 PS = 177776
BUFIN 000546R FE.MUP= 000002 IE.ISQ= 177703 IS.PES= 100001 SPARE = 000010
BUFOUT 001630R FE.MXT= 040000 IE.LCK= 177745 IS.PND= 000000 SP.EIP= 000001
CNTBL 000002R FE.NLG= 100000 IE.MOD= 177753 IS.RDD= 000002 SP.ENB= 000002
DV.CCL= 000002 FE.OFF= 001000 IE.NBF= 177731 IS.SUC= 000001 SP.LOG= 000004
DV.COM= 020000 FE.PKT= 000100 IE.NBK= 177727 IS.TAB= 004401 START 000000R
DV.DIR= 000010 FE.PLA= 000020 IE.NDR= 177670 IS.TMO= 000002 SWR = 177570
DV.F11= 040000 GS.DEL= 000001 IE.NFI= 177704 IS.TNC= 000002 S.BMSK 177776
DV.ISP= 002000 G.CNT 000004 IE.NFW= 177673 I.AST 000022 S.BMSV 177774
DV.MBC= 000400 G.EFLG 000006 IE.NLK= 177661 I.ATTL= 000044 S.CON 000010
DV.MNT= 100000 G.GRP 000002 IE.NLN= 177733 I.EFN 000003 S.CSR 000012
DV.MXD= 000100 G.LNK 000000 IE.NNC= 177663 I.FCN 000012 S.CTM 000006
DV.OSP= 004000 G.STAT 000003 IE.NNL= 177662 I.IOSB 000014 S.FRK 000016
DV.PSE= 010000 HOST 000056R IE.NNN= 177674 I.LGTH= 000044 S.ITM 000007
DV.REC= 000001 IE.ABO= 177761 IE.NOD= 177751 I.LNK 000000 S.LHD 000000
DV.SDI= 000020 IE.ALC= 177654 IE.NSF= 177746 I.LN2 000006 S.PKT 000014
DV.SQD= 000040 IE.ALN= 177736 IE.NST= 177660 I.PRI 000002 S.PRI 000004
DV.SWL= 001000 IE.AST= 177660 IE.NTR= 177651 I.PRM 000024 S.RCNT 177772
DV.TTY= 000004 IE.BAD= 177777 IE.OFL= 177677 I.TCB 000004 S.ROFF 177773
DV.UMD= 000200 IE.BBE= 177710 IE.ONL= 177675 I.UCB 000010 S.STS 000011
D.DSP 000012 IE.BCC= 177676 IE.ONP= 177773 LD$EN = 000000 S.VCT 000005
D.LNK 000000 IE.BDI= 177714 IE.OVR= 177756 L.ASG 000010 S1.BEL= 000400
D.MSK 000014 IE.BDR= 177716 IE.PES= 177655 L.LGTH= 000012 S1.CTO= 000040
D.NAM 000004 IE.BDV= 177711 IE.PRI= 177760 L.LNK 000000 S1.CTS= 010000
D.PCB 000034 IE.BHD= 177700 IE.RAC= 177724 L.NAM 000002 S1.DEC= 002000
D.UCB 000002 IE.BLB= 177672 IE.RAT= 177723 L.TYPE 000005 S1.DPR= 001000
D.UCBL 000010 IE.BLK= 177754 IE.RBG= 177730 L.UCB 000006 S1.DSI= 004000
D.UNIT 000006 IE.BNM= 177712 IE.RCN= 177722 L.UNIT 000004 S1.ESC= 000004
D.VCAN= 000002 IE.BTF= 177664 IE.REJ= 177650 MPAR = 172100 S1.IBF= 100000
D.VDEB= 177776 IE.BTP= 177725 IE.RER= 177740 MPCSR = 177746 S1.IBY= 000200
D.VINI= 000000 IE.BVR= 177701 IE.RNM= 177715 M.BFVH 000011 S1.OBY= 000100
D.VOUT= 000004 IE.BYT= 177755 IE.RSU= 177757 M.BFVL 000012 S1.RAL= 000010
D.VPWF= 000006 IE.CKS= 177742 IE.SNC= 177735 M.LGTH= 000014 S1.RNE= 000020
ENCAN 000256R IE.CLO= 177732 IE.SPC= 177772 M.LNK 000000 S1.RST= 000001
ENINI 000016R IE.CNR= 177667 IE.SQC= 177734 M.UMRA 000002 S1.RUB= 000002
ENINP1 000372R IE.CON= 177752 IE.SRE= 177762 M.UMRN 000004 S1.USI= 020000
ENINP2 000436R IE.DAA= 177770 IE.STK= 177706 M.UMVH 000010 S2.ACR= 000001
ENOUT1 000524R IE.DAO= 177763 IE.TMM= 177671 M.UMVL 000006 S2.BRQ= 000020
ENOUT2 000534R IE.DFU= 177750 IE.TMO= 177666 OUT 000176R S2.CR = 000010
ENPWF 000302R IE.DNA= 177771 IE.ULK= 177653 OUTADD 001632R S2.FDX= 100000
ENTIM 000300R IE.DNR= 177775 IE.VER= 177774 OUTBUF 001634R S2.FLF= 040000
ETHIBL= 177776 IE.DUN= 177767 IE.WAC= 177743 OUT1 000220R S2.HFF= 020000
ETHICS= 000000 IE.DUP= 177707 IE.WAT= 177741 O.AST 000006 S2.HFL= 003400
ETHIWC= 177774 IE.EOF= 177766 IE.WCK= 177652 O.EFN 000010 S2.HHT= 010000
ETHOBL= 177776 IE.EOT= 177702 IE.WER= 177737 O.ESB 000012 S2.IRQ= 000200
ETHOCS= 000000 IE.EOV= 177765 IE.WLK= 177764 O.LGTH= 000034 S2.ORQ= 000100
ETHOSD= 000002 IE.EXP= 177665 IE.2DV= 177720 O.LNK 000000 S2.SRQ= 000040
ENDRV MACRO M1113 15-DEC-82 20:33 PAGE 3-3
SYMBOL TABLE
S2.VFL= 004000 T.MXSZ 000050 T3.REM= 020000 U.ATT 000022 U.UNIT 000006
S2.WRA= 000006 T.NAM 000006 T3.ROV= 000040 U.BUF 000024 U.VCB = 000034
S2.WRB= 000002 T.OFF 000062 T3.RST= 000400 U.CBF = 000032 U2.AT.= 000020
S3.BCC= 020000 T.PCB 000046 T3.SLV= 002000 U.CLI 177772 U2.CRT= 002000
S3.DAO= 040000 T.PRI 000002 UC.ALG= 000200 U.CNT 000030 U2.DH1= 100000
S3.PCU= 100000 T.RCVL 000012 UC.ATT= 000010 U.CTL 000004 U2.DJ1= 040000
S3.RAL= 000010 T.RRFL 000066 UC.KIL= 000004 U.CTYP 000050 U2.DZ1= 000100
S3.RCU= 000400 T.SAST 000054 UC.LGH= 000003 U.CW1 000010 U2.ESC= 001000
S3.TAB= 000100 T.SRCT 000065 UC.NPR= 000100 U.CW2 000012 U2.HFF= 010000
S3.VER= 010000 T.STAT 000032 UC.PWF= 000020 U.CW3 000014 U2.HLD= 000040
S3.WAL= 004000 T.ST2 000034 UC.QUE= 000040 U.CW4 000016 U2.LOG= 000400
S3.WES= 000040 T.ST3 000036 US.ABO= 000001 U.DCB 000000 U2.LWC= 000001
S3.8BC= 000200 T.TCBL 000030 US.BSP= 000002 U.FCDE= 000040 U2.L3S= 000004
TABLE 000310R T.UCB 000026 US.BSY= 000200 U.FNUM= 000036 U2.L8S= 010000
TEMP 000000R T2.ABO= 000100 US.CRW= 000004 U.FPS = 000044 U2.NEC= 004000
TPS = 177564 T2.AST= 100000 US.DSB= 000010 U.KCSR= 000032 U2.PRV= 000010
TS.BLK= 170700 T2.CAF= 000400 US.ECH= 000002 U.KCS6= 000034 U2.RMT= 020000
TS.CKP= 000200 T2.CHK= 020000 US.FOR= 000040 U.LUIC 177774 U2.R04= 100000
TS.CKR= 000100 T2.CKD= 010000 US.FRK= 000002 U.OWN 177776 U2.SCS= 000004
TS.EXE= 100000 T2.DST= 040000 US.KPF= 000001 U.RED 000002 U2.SLV= 000200
TS.MSG= 020000 T2.FXD= 002000 US.LAB= 000004 U.RPS = 000042 U2.VT5= 000002
TS.NRP= 010000 T2.HLT= 000200 US.MDE= 000002 U.SCB 000020 U2.7CH= 010000
TS.OUT= 000400 T2.SEF= 004000 US.MDM= 000020 U.STS 000005 $ENINP 000316RG
TS.RDN= 040000 T2.SPN= 000004 US.MNT= 000100 U.ST2 000007 $ENINT 000304RG
TS.RUN= 004000 T2.STP= 000020 US.OFL= 000001 U.TCHP 000042 $ENOUT 000450RG
T.ACTL 000052 T2.TIO= 001000 US.OUT= 000001 U.TCVP 000043 $ENTBL 000006RG
T.ASTL 000016 T2.WFR= 000001 US.PUB= 000004 U.TFLK 000040 $FORK = ****** G
T.ATT 000056 T3.ACP= 100000 US.PWF= 000010 U.TFRQ 000037 $GTPKT= ****** G
T.CPCB 000004 T3.CAL= 000100 US.RED= 000002 U.TLPP 000036 $GTWRD= ****** G
T.DPRI 000040 T3.CLI= 001000 US.SHR= 000001 U.TMTI 000047 $IODON= ****** G
T.EFLG 000022 T3.MCR= 004000 US.SPU= 000002 U.TSTA 000026 $PTWRD= ****** G
T.IOC 000003 T3.NET= 000020 US.UMD= 000010 U.TTAB 000034 $$MSG = 000000
T.LBN 000041 T3.NSD= 000200 US.VV = 000001 U.TTYP 000046 $$$ = 000056
T.LDV 000044 T3.PMD= 040000 US.WCK= 000010 U.TUX 000024 ...GBL= 000000
T.LNK 000000 T3.PRV= 010000 U.ACP = 000032 U.UIC 000044
. ABS. 177776 000
002712 001
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 5677 WORDS ( 23 PAGES)
DYNAMIC MEMORY: 20238 WORDS ( 77 PAGES)
ELAPSED TIME: 00:00:25
ENDRV,ENDRV=EXEMC.MLB/ML,ENDRV.RSX